// // g++ -std=c++11 test_public_cast.cpp
////--------------------------------------------------------------------
//
//#include <vector>
//#include <iostream>
//#include <typeinfo>
//#include "public_cast.hpp"
//
//struct Pvalue 
//{ 
//	typedef int* (std::vector<int>::iterator::*type); 
//};
//
//void test() 
//{
//	std::vector<int> v = {1, 2, 3, 4, 5};
//	auto it = v.begin();
//
//	std::cout << it.*public_cast<Pvalue, &std::vector<int>::iterator::_M_current>::value << std::endl;
//	//std::cout << &(*it) << std::endl;
//
//
//	//std::cout << typeid(std::vector<int>::pointer).name();
//	//std::cout << typeid(std::vector<int>::iterator::iterator_type).name();
//}
//
//int main( /* int argc, char* argv[] */ )
//{
//	test();
//	return 0;
//}
